#ifndef VIDEOANALYSISSYSTEM_VAS_EXCEPTION_H
#define VIDEOANALYSISSYSTEM_VAS_EXCEPTION_H

#include <exception>
#include <string>

namespace vas {
    class VasError : public std::exception {
    protected:
        std::string message;
    public:
        VasError() {
            this->message = "ERROR";
        }

        explicit VasError(const std::string &str) {
            this->message = "ERROR: " + str;
        }

        ~VasError() noexcept override = default;


        const char *what() const noexcept override {
            return this->message.c_str();
        }
    };


    class VasInvalidValue : public VasError {
    public:
        explicit VasInvalidValue(const std::string &str){
            this->message = "InvalidValue: " + str;
        }
    };

    class VasNotFound : public VasError {
    public:
        explicit VasNotFound(const std::string &str){
            this->message = "DataNotFound: " + str;
        }
    };

    class VasRuntimeError : public VasError {
    public:
        explicit VasRuntimeError(const std::string &str){
            this->message = "RuntimeError: " + str;
        }
    };

}


#endif //VIDEOANALYSISSYSTEM_VAS_EXCEPTION_H
